package Cliente.interface_grafico;


import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ObjectOutputStream;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import mensagem.MListaJogadores;


public class JogadoresJogoFechado extends JFrame{

	private ObjectOutputStream output;

	private JTable tabela;
	private JButton b_ok;
	private JButton b_cancelar;
	private JFrame janela;
	private JScrollPane scrollPane;
	private InterfaceGrafico interface_grafico;

	public JogadoresJogoFechado(String title, MListaJogadores mensagem, ObjectOutputStream out, InterfaceGrafico interface_grafico) {
		super(title);
		assert (title != null && mensagem != null && out != null);
		this.output = out;
		this.interface_grafico = interface_grafico;

		setSize(500, 300);
		setLocation(400, 200);
		setResizable(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setLayout(new GridBagLayout());

		String[] columnNames = {"Id", "Nick", "Nome", "Sexo", "Nacionalidade", "Pontos", "Perfil"};

		tabela = new JTable(new JogadoresTableModel(mensagem.getJogadores(), columnNames));
		tabela.getColumn("Perfil").setCellRenderer(new BotaoPerfilRenderer());	//a aparencia da ultima coluna deve ser a de um botao
		tabela.getColumn("Perfil").setCellEditor(new BotaoPerfilEditor(new JCheckBox(), output));	//Quando se carrega no botao na ultima coluna isso corresponde a uma edicao da mesma. Especificacao de um botao como editor.
		tabela.setAutoCreateRowSorter(true);	//para ser possivel ordenar a tabela pelas varias colunas

		scrollPane = new JScrollPane(tabela);
		tabela.setFillsViewportHeight(true);
		
		b_ok = new JButton("Ok");

		b_ok.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				
				//hjkgjk
				
				JogadoresJogoFechado.this.interface_grafico.getMesa().setAguardaJogadores();
				JogadoresJogoFechado.this.interface_grafico.getJMenuBar().getMenu(0).getMenuComponent(0).setEnabled(false);
				janela.setVisible(false);
				janela.dispose();
				
				JogadoresJogoFechado.this.interface_grafico.fecharNovoJogoMenu();
			}
		});

		b_cancelar = new JButton("cancelar");

		b_cancelar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				janela.setVisible(false);
				janela.dispose();
			}
		});
		
		//Layout com o GridBagLayout
		scrollPane.setPreferredSize(getMaximumSize());
		GridBagConstraints c = new GridBagConstraints();
		c.fill = GridBagConstraints.BOTH;
		c.gridx = 0;
		c.gridy = 0;
		c.ipady = 100;
		c.weightx = 1.0;
		c.weighty = 1.0;
		Container cp = getContentPane();
		cp.add(scrollPane, c);
		c.fill = GridBagConstraints.NONE;
		c.ipady = 0;
		c.gridx = 0;
		c.gridy = 1;
		c.weightx = 0.0;
		c.weighty = 0.0;
		JPanel panel = new JPanel();
		panel.add(b_cancelar);
		panel.add(b_ok);
		cp.add(panel, c);

		janela = this;
		setVisible(true);
	}

}
